home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / clang / ebksrc.zip / EB2.HPP < prev    next >
C/C++ Source or Header  |  1991-08-10  |  3KB  |  135 lines

  1. /*
  2.  
  3.     eb2.hpp
  4.     8-10-91
  5.     Electronic Book: header for eb2.cpp
  6.  
  7.     Copyright 1991
  8.     John W. Small
  9.     All rights reserved
  10.  
  11.     PSW / Power SoftWare
  12.     P.O. Box 10072
  13.     McLean, Virginia 22102 8072 USA
  14.  
  15.     John Small
  16.     Voice: (703) 759-3838
  17.     CIS: 73757,2233
  18.  
  19. */
  20.  
  21. #ifndef EB2_HPP
  22. #define EB2_HPP
  23.  
  24. #ifndef FLEXLIST_CPP
  25. #include <flexlist.hpp>
  26. #endif
  27.  
  28. #ifndef PCVIDEO_HPP
  29. #include <pcvideo.hpp>
  30. #endif
  31.  
  32. /*
  33.  
  34.     The HyperLaunch class is used to keep track of the
  35.     positions of launches within the context of a
  36.     HyperTopic.  It is also used to hilite a selected
  37.     launch when viewing.  The address of the first
  38.     position past the launch's opening delimiter is
  39.     passed to the constructor.  The pointer is copied
  40.     (no suballocated memory here) and the visual length
  41.     of the launch is calculated.
  42.  
  43.     The HyperLaunch class is stored in a FlexList in the
  44.     HyperContext class which calls hilite() to hilite
  45.     the launch (see    below).
  46.  
  47. */
  48.  
  49. class HyperLaunch  {
  50.     int ix, iy, ilen;
  51.     const char *launch;
  52.     #pragma argsused
  53.     void * operator new(size_t size)
  54.         { return (void *)0; }
  55. public:
  56.     HyperLaunch(int imageX, int imageY,
  57.         const char *launch);
  58.     #pragma argsused
  59.     void * operator new(size_t size, void * ptr)
  60.         { return ptr; }
  61.     void hilite(int winleft, int wintop, int winwidth,
  62.         int winheight, int attr);
  63.     int len()  { return ilen; }
  64.     int IX()  { return ix; }
  65.     int IY()  { return iy; }
  66.     int match(const char *prefix, int pfLen);
  67.     int onLaunchPad(int imageX, int imageY)
  68.         { return (imageY == iy && imageX >= ix
  69.             && imageX <= ix + ilen - 1); }
  70. };
  71. typedef HyperLaunch * HyperLauncH;
  72. #define HyperLauncH0 ((HyperLauncH)0)
  73.  
  74.  
  75.  
  76. /*
  77.  
  78.     The HyperContext class views a given context. If a
  79.     launch is choosen by the reader the target is
  80.     determined from outlinks.  Information about the
  81.     launches within the context are stored in
  82.     HyperLaunch instances and are queued into the
  83.     HyperContext's base class FlexList.
  84.  
  85. */
  86.  
  87. #define MAX_HC_PREFIX  21
  88.  
  89.  
  90. class HyperContext  {
  91. static  Palette defaultP;
  92.     PalettE P;
  93.     char *context;
  94.     unsigned clen;
  95.     FlexList lines;
  96.     FlexList launches;
  97.     char *inlinks, *outlinks;
  98.     unsigned choice;
  99.     void findLinesAndLaunches();
  100.     unsigned startRow, startColumn;
  101.     unsigned cursorRow, cursorColumn;
  102.     unsigned topicNum;
  103. static  int defaultTabSpacing;
  104.     int tabSpacing;
  105.     char prefix[MAX_HC_PREFIX];
  106.     int pfLen;
  107. public:
  108.     enum HC_PALETTE { COLOR, NORMAL, HILITE, SELECT };
  109.     void setPalette(PalettE P = PalettE0)
  110.         { this->P = (P? P : defaultP); }
  111.     HyperContext(char *context, unsigned clen,
  112.         const char *inlinks, const char *outlinks,
  113.         unsigned startRow, unsigned startColumn,
  114.         unsigned cursorRow, unsigned cursorColumn,
  115.         unsigned topicNum);
  116.     enum HC_ACTIONS  {
  117.         HELP, LOAD, TABLE_OF_CONTENTS,
  118.         INDEX, LAUNCH, BACKUP, EXIT,
  119.         ATTR_TOGGLE, RES_TOGGLE
  120.     };
  121.     HC_ACTIONS view();
  122.     char * newTarget();  // volatile, save immediately
  123.     unsigned StartColumn()  { return startColumn; }
  124.     unsigned StartRow()  { return startRow; }
  125.     unsigned CursorColumn()  { return cursorColumn; }
  126.     unsigned CursorRow()  { return cursorRow; }
  127.     unsigned TopicNum()  { return topicNum; }
  128.     ~HyperContext();
  129. };
  130. typedef HyperContext *HyperContexT;
  131. #define HyperContexT0 ((HyperContexT)0)
  132.  
  133. #endif
  134.  
  135.